<?php

namespace app\command;

use app\common\model\AdminVisitLogModel;
use app\common\model\DataSummaryAdminModel;
use app\common\service\AdminUserService;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;
use think\facade\Cache;

class DataSummaryAdmin extends Command
{
    protected function configure()
    {
        $this->setName('后台每日数据统计')
            ->addArgument('date', Argument::OPTIONAL, "参数:日期")
            ->setDescription('ok');
    }

    protected function execute(Input $input, Output $output)
    {
        //获取需要处理的日期 , 可以地址栏参数传递过来
        $date = $input->getArgument('date') ?? '';

        if (!preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $date)) {
            $date = date('Y-m-d');
        }
        //凌晨12的时候,重新处理昨日数据
        $cache_key = 'handle_yesterday';
        $is_ok = Cache::store('redis')->get($cache_key);
        if (date('H') == '00' && empty($is_ok)) {
            $date = date('Y-m-d', strtotime('-1 day'));
            set_log('DataSummary', '统计一次昨日数据'); //防止凌晨23点59分这样的数据无法统计到
            Cache::store('redis')->set($cache_key, 1, 3600);
        }

        set_log('DataSummary', '统计的日期:' . $date);

        $row = [];
        $row['date'] = $date;
        //1.获取每日登录信息
        $login_info = AdminUserService::ins()->loginInfo($date);

        //2.统计每日下单人数

        //3.统计每日支付金额

        //4.获取访问人数
        $visit_user = AdminVisitLogModel::where('date', $date)->count('id');
        $login_info['visit_user'] = $visit_user ?? 0;
        //更多...
        DataSummaryAdminModel::create(array_merge($row, $login_info), [], true);
        $output->writeln('处理日期:' . $date . '|处理时间:' . date('Y-m-d H:i:s'));
    }
}